API Documentation
Shader.h
1 // Shader.h
3 //
5 
6 namespace nkGraphics
7 {
13  class DLL_GRAPHICS_EXPORT Shader : public Resource, public nkExport::Exportable
14  {
15  public :
16 
20  Shader () ;
24  virtual ~Shader () ;
25 
26  // Getters
30  unsigned int getId () const ;
34  bool isUsableScene () const ;
38  bool isUsablePostProcess () const ;
42  bool isUsableCompute () const ;
46  bool isUsableGeometry () const ;
50  bool isUsableRaytracing () const ;
54  Program* getProgram () const ;
58  unsigned int getMaxInstancePerBuffer () const ;
62  bool getIsBuiltInShader () const ;
66  bool getDirtyInstanceData () const ;
67 
68  // Setters
72  virtual void setProgram (Program* prog) ;
76  void setId (unsigned int id) ;
84  virtual void setMaxInstancePerBuffer (unsigned int value) ;
93  void setIsBuiltInShader (bool value) ;
99  void setDirtyInstanceData (bool value) ;
100 
106  virtual bool load () override ;
110  virtual void unload () override ;
111 
112  // Constant buffers
120  ConstantBuffer* addConstantBuffer (unsigned int registerSlot, unsigned int space = 0) ;
126  ConstantBuffer* getConstantBuffer (unsigned int slot, unsigned int space = 0) const ;
134  void changeConstantBufferSlot (unsigned int fromSlot, unsigned int toSlot, unsigned int space = 0) ;
142  void changeConstantBufferSpace (unsigned int fromSpace, unsigned int toSpace, unsigned int slot) ;
149  void deleteConstantBuffer (unsigned int slot, unsigned int space = 0) ;
158  const ConstantBufferResourceDesc* getConstantBufferPerIndex (unsigned int index) const ;
159 
160  // Textures
168  void addTexture (ShaderResource* texOrUav, unsigned int registerSlot, unsigned int space = 0) ;
174  ShaderResource* getTexture (unsigned int slot, unsigned int space = 0) const ;
182  void setTexture (ShaderResource* texOrUav, unsigned int slot, unsigned int space = 0) ;
190  void changeTextureSlot (unsigned int fromSlot, unsigned int toSlot, unsigned int space = 0) ;
198  void changeTextureSpace (unsigned int fromSpace, unsigned int toSpace, unsigned int slot) ;
205  void forgetTexture (unsigned int slot, unsigned int space = 0) ;
214  const ShaderResourceDesc* getTexturePerIndex (unsigned int index) const ;
215 
216  // Samplers
224  void addSampler (Sampler* sampler, unsigned int registerSlot, unsigned int space = 0) ;
230  Sampler* getSampler (unsigned int slot, unsigned int space = 0) const ;
238  void setSampler (Sampler* sampler, unsigned int slot, unsigned int space = 0) ;
246  void changeSamplerSlot (unsigned int fromSlot, unsigned int toSlot, unsigned int space = 0) ;
254  void changeSamplerSpace (unsigned int fromSpace, unsigned int toSpace, unsigned int slot = 0) ;
261  void forgetSampler (unsigned int slot, unsigned int space = 0) ;
270  const SamplerResourceDesc* getSamplerPerIndex (unsigned int index) const ;
271 
272  // UAV
280  void addUavBuffer (Buffer* buffer, unsigned int registerSlot, unsigned int space = 0) ;
286  Buffer* getUavBuffer (unsigned int slot, unsigned int space = 0) const ;
294  void setUavBuffer (Buffer* buffer, unsigned int slot, unsigned int space = 0) ;
302  void changeUavBufferSlot (unsigned int fromSlot, unsigned int toSlot, unsigned int space = 0) ;
310  void changeUavBufferSpace (unsigned int fromSpace, unsigned int toSpace, unsigned int slot = 0) ;
317  void forgetUavBuffer (unsigned int slot, unsigned int space = 0) ;
326  const UavResourceDesc* getUavBufferPerIndex (unsigned int index) const ;
327 
328  // Instance data
342  virtual ShaderInstanceMemorySlot* getInstanceMemorySlot (unsigned int index) ;
350  virtual ShaderInstanceMemorySlot* getInstanceMemorySlotReadOnly (unsigned int index) const ;
357  virtual void changeInstanceMemorySlotOrder (unsigned int fromIndex, unsigned int toIndex) ;
363  virtual void deleteInstanceMemorySlot (unsigned int index) ;
364 
370  virtual void exportClassToTree (nkExport::Node* rootNode) override ;
376  virtual void importClassFromTree (nkExport::Node* rootNode) override ;
377  } ;
378 }
nkGraphics::Shader::changeInstanceMemorySlotOrder
virtual void changeInstanceMemorySlotOrder(unsigned int fromIndex, unsigned int toIndex)
nkGraphics::Shader::getDirtyInstanceData
bool getDirtyInstanceData() const
nkGraphics::Shader::unload
virtual void unload() override
nkGraphics::Shader::isUsableRaytracing
bool isUsableRaytracing() const
nkGraphics::Program
Holds all informations related to GPU programs, and manages their compilation.
Definition: Program.h:12
nkGraphics::Shader::addSampler
void addSampler(Sampler *sampler, unsigned int registerSlot, unsigned int space=0)
nkGraphics::Shader::changeTextureSpace
void changeTextureSpace(unsigned int fromSpace, unsigned int toSpace, unsigned int slot)
nkGraphics::Shader::setProgram
virtual void setProgram(Program *prog)
nkGraphics::Shader::changeUavBufferSpace
void changeUavBufferSpace(unsigned int fromSpace, unsigned int toSpace, unsigned int slot=0)
nkGraphics::Shader::getSampler
Sampler * getSampler(unsigned int slot, unsigned int space=0) const
nkGraphics::Shader::getConstantBufferPerIndex
const ConstantBufferResourceDesc * getConstantBufferPerIndex(unsigned int index) const
nkGraphics::Shader::deleteInstanceMemorySlot
virtual void deleteInstanceMemorySlot(unsigned int index)
nkGraphics::ShaderBoundResourceDesc
Holds information about a resource linked in a shader for feeding.
Definition: ShaderResourceDesc.h:13
nkGraphics::Shader::setTexture
void setTexture(ShaderResource *texOrUav, unsigned int slot, unsigned int space=0)
nkExport::Exportable
An interface to define objects that can be exported using this component.
Definition: Exportable.h:15
nkGraphics::Shader::changeUavBufferSlot
void changeUavBufferSlot(unsigned int fromSlot, unsigned int toSlot, unsigned int space=0)
nkGraphics::Shader::changeTextureSlot
void changeTextureSlot(unsigned int fromSlot, unsigned int toSlot, unsigned int space=0)
nkGraphics::Buffer
A buffer that will reside on the GPU.
Definition: Buffer.h:15
nkGraphics::Shader::addInstanceMemorySlot
virtual ShaderInstanceMemorySlot * addInstanceMemorySlot()
nkGraphics::Shader::setUavBuffer
void setUavBuffer(Buffer *buffer, unsigned int slot, unsigned int space=0)
nkGraphics::Shader::forgetSampler
void forgetSampler(unsigned int slot, unsigned int space=0)
nkGraphics::Shader::setMaxInstancePerBuffer
virtual void setMaxInstancePerBuffer(unsigned int value)
nkGraphics::Shader::changeConstantBufferSlot
void changeConstantBufferSlot(unsigned int fromSlot, unsigned int toSlot, unsigned int space=0)
nkGraphics::Shader::getInstanceMemorySlotReadOnly
virtual ShaderInstanceMemorySlot * getInstanceMemorySlotReadOnly(unsigned int index) const
nkGraphics::Shader::getConstantBuffer
ConstantBuffer * getConstantBuffer(unsigned int slot, unsigned int space=0) const
nkGraphics::Shader::getInstanceMemorySlot
virtual ShaderInstanceMemorySlot * getInstanceMemorySlot(unsigned int index)
nkGraphics::Shader::forgetTexture
void forgetTexture(unsigned int slot, unsigned int space=0)
nkGraphics::Shader::changeConstantBufferSpace
void changeConstantBufferSpace(unsigned int fromSpace, unsigned int toSpace, unsigned int slot)
nkGraphics::Shader
A shader class, feeding data to a Program.
Definition: Shader.h:14
nkGraphics::Shader::getSamplerPerIndex
const SamplerResourceDesc * getSamplerPerIndex(unsigned int index) const
nkGraphics::Shader::setDirtyInstanceData
void setDirtyInstanceData(bool value)
nkGraphics::Shader::setIsBuiltInShader
void setIsBuiltInShader(bool value)
nkGraphics::Shader::getMaxInstancePerBuffer
unsigned int getMaxInstancePerBuffer() const
nkGraphics::Shader::getProgram
Program * getProgram() const
nkGraphics::Shader::isUsableGeometry
bool isUsableGeometry() const
nkGraphics::Shader::importClassFromTree
virtual void importClassFromTree(nkExport::Node *rootNode) override
nkGraphics::Shader::deleteConstantBuffer
void deleteConstantBuffer(unsigned int slot, unsigned int space=0)
nkGraphics::Shader::Shader
Shader()
nkExport::Node
A node in the tree structure representing the data to export / import.
Definition: Node.h:42
nkGraphics::Shader::setId
void setId(unsigned int id)
nkGraphics::Shader::exportClassToTree
virtual void exportClassToTree(nkExport::Node *rootNode) override
nkGraphics::Shader::getIsBuiltInShader
bool getIsBuiltInShader() const
nkGraphics::Shader::setSampler
void setSampler(Sampler *sampler, unsigned int slot, unsigned int space=0)
nkGraphics::Shader::addTexture
void addTexture(ShaderResource *texOrUav, unsigned int registerSlot, unsigned int space=0)
nkGraphics::Shader::getUavBuffer
Buffer * getUavBuffer(unsigned int slot, unsigned int space=0) const
nkGraphics::Sampler
Holds all the information needed of a sampler used during rendering.
Definition: Sampler.h:12
nkGraphics::Shader::addUavBuffer
void addUavBuffer(Buffer *buffer, unsigned int registerSlot, unsigned int space=0)
nkGraphics::Resource
Base class for a resource in the component.
Definition: Resource.h:12
nkGraphics::Shader::isUsableScene
bool isUsableScene() const
nkGraphics::Shader::changeSamplerSpace
void changeSamplerSpace(unsigned int fromSpace, unsigned int toSpace, unsigned int slot=0)
nkGraphics::Shader::isUsablePostProcess
bool isUsablePostProcess() const
nkGraphics::Shader::isUsableCompute
bool isUsableCompute() const
nkGraphics::Shader::addConstantBuffer
ConstantBuffer * addConstantBuffer(unsigned int registerSlot, unsigned int space=0)
nkGraphics::Shader::forgetUavBuffer
void forgetUavBuffer(unsigned int slot, unsigned int space=0)
nkGraphics::Shader::getTexturePerIndex
const ShaderResourceDesc * getTexturePerIndex(unsigned int index) const
nkGraphics::Shader::getUavBufferPerIndex
const UavResourceDesc * getUavBufferPerIndex(unsigned int index) const
nkGraphics
Encompasses all API of component NilkinsGraphics.
Definition: BoundingBox.h:7
nkGraphics::ConstantBuffer
Describes a constant buffer.
Definition: ConstantBuffer.h:12
nkGraphics::Shader::~Shader
virtual ~Shader()
nkGraphics::Shader::getId
unsigned int getId() const
nkGraphics::Shader::getTexture
ShaderResource * getTexture(unsigned int slot, unsigned int space=0) const
nkGraphics::ShaderInstanceMemorySlot
A memory slot for per instance data in a Shader.
Definition: ShaderInstanceMemorySlot.h:14
nkGraphics::Shader::load
virtual bool load() override
nkGraphics::Shader::changeSamplerSlot
void changeSamplerSlot(unsigned int fromSlot, unsigned int toSlot, unsigned int space=0)
nkGraphics::ShaderResource
Base class for shader resources. Those are resources that can be fed to a Shader.
Definition: ShaderResource.h:12